package com.briup.corejava.day22;

import com.briup.corejava.day11.pojo.Student;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.*;

/**
 * 需求：
 * 学生管理系统，学生的信息
 * 36个字段
 * 勾选字段进行excel的导出
 * 勾选不同的字段，调用不同的get方法
 * Map<String,Object>
 */
public class Test4 {
    public static void main(String[] args) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
        // 字段和值
        Map<String,Object> map = new HashMap<>();
        Map<String,Object> m = new HashMap<>();
        // 装入集合
        List<Map<String ,Object>> list = new ArrayList<>();
        // 第一个学生
        map.put("name","张三");
        map.put("age",20);
        // 第二个
        m.put("name","李四");
        m.put("gender","男");
        m.put("count","2");
        // list.add(map);
        list.add(m);

        // 统一调用Student的set方法
        Class<Student> clazz = Student.class;
        Student s = new Student();
        // 动态构建方法名字
        for(Map<String,Object> m1 : list){
            Set<String> keySet = m1.keySet();
            for(String key : keySet){
                String method = "set"+upper(key);
                Method me = clazz.getMethod(method, String.class);
                me.invoke(s,m1.get(key));
            }
        }
        System.out.println(s);


    }

    // 首字母大写的静态方法 string -> String
    public static String upper(String s){
        return s.substring(0,1).toUpperCase()+s.substring(1);
    }
}
